package com.atguigu.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.atguigu.entity.Role;
import com.atguigu.service.RoleService;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

@Controller
@RequestMapping("role")
public class RoleController extends BaseController{
    public static final String SUCCESS_PAGE="common/successPage";
    //@Resource
    @Reference
    private RoleService roleService;
//    @RequestMapping
//    public String index(Map map){
//        //获取所有角色的方法
//        List<Role> roleList = roleService.findAll();
//        //将所有角色放到request域中
//        map.put("list",roleList);
//        return "role/index";
//    }
    //分页及带条件查询的方法
    @RequestMapping
    public String index(Map map, HttpServletRequest request){
        //获取请求参数
        Map<String,Object> filters = getFilters(request);
        //将filters放到request域中
        map.put("filters",filters);
        //调用RoleService中分页及带条件查询的方法
        PageInfo<Role> pageInfo = roleService.findPage(filters);
        //将pageInfo对象放到request域中
        map.put("page",pageInfo);
        return "role/index";
    }
    //去添加角色的页面
    @RequestMapping("/create")
    public String goAddPage(){
        return "role/create";
    }
    //添加角色
    @RequestMapping("/save")
    public String save(Role role){
        roleService.insert(role);
        //重定向到查询所有的角色的方法
       // return "redirect:/role";
        //去common下成功页面
        return SUCCESS_PAGE;
    }
    //删除角色
    @RequestMapping("/delete/{roleId}")
    public String delete(@PathVariable("roleId") Long roleId){
        //调用RoleService中删除的方法
        roleService.delete(roleId);
        //重定向到查询所有角色的方法
        return "redirect:/role";
    }
    //去修改页面的方法
    @RequestMapping("/edit/{roleId}")
    public String goEditPage(@PathVariable("roleId") Long roleId,Map map){
        //调用RoleService中根据Id查询角色的方法
        Role role = roleService.getById(roleId);
        //将查询的角色放到request域中
        map.put("role",role);
        return "role/edit";
    }
    //修改角色
    @RequestMapping("/update")
    public String update(Role role){
        //调用roleService当中的update方法
        System.out.println(role);
        roleService.update(role);
        //去common下的successPage页面
        return SUCCESS_PAGE;

    }
    /**
     * 封装页面提交的分页参数及搜索条件
     * @param request
     * @return
     */
//    private Map<String, Object> getFilters(HttpServletRequest request) {
//        Enumeration<String> paramNames = request.getParameterNames();
//        Map<String, Object> filters = new TreeMap();
//        while(paramNames != null && paramNames.hasMoreElements()) {
//            String paramName = (String)paramNames.nextElement();
//            String[] values = request.getParameterValues(paramName);
//            if (values != null && values.length != 0) {
//                if (values.length > 1) {
//                    filters.put(paramName, values);
//                } else {
//                    filters.put(paramName, values[0]);
//                }
//            }
//        }
//        if(!filters.containsKey("pageNum")) {
//            filters.put("pageNum", 1);
//        }
//        if(!filters.containsKey("pageSize")) {
//            filters.put("pageSize", 3);
//        }
//
//        return filters;
//    }



}
